path、fs 與 http。path 模組:解決跨平台路徑大戰在後端開發中,處理檔案路徑是一個常見的痛點。Windows 系統的路徑是用反斜線(如 C:\Users\Desktop),而 Mac/Linux 是用正斜線(如 /Users/Desktop)。如果把路徑寫死,你的程式換一台電腦就會當機。
path 模組就是用來解決這個問題的。
實作練習:
在 hello-node 資料夾下,新增一個 server.js,輸入以下程式碼:
import path from 'path';
// 取得目前的檔案所在資料夾路徑
// 注意:這是 Node.js v20.11 以上在 ESM 模式下的專屬寫法!
const currentDir = import.meta.dirname;
// 使用 path.join 安全地組合路徑
const dataPath = path.join(currentDir, 'config', 'settings.json');
console.log("目前的資料夾:", currentDir);
console.log("組合後的安全路徑:", dataPath);
執行 node server.js。你會發現 path.join() 自動幫你依據目前的作業系統,拼湊出最完美的斜線方向。
fs 模組:檔案系統的進階操作昨天我們用 fs/promises 讀寫了檔案,今天來看看如何「操作資料夾」。在實務上,我們常需要讀取某個資料夾底下有哪些檔案。
實作練習:
繼續在 server.js 往下加入這段程式碼:
import { readdir } from 'fs/promises';
const checkDirectory = async () => {
try {
// 讀取目前資料夾 (import.meta.dirname) 底下的所有檔案與資料夾
const files = await readdir(import.meta.dirname);
console.log(" 本資料夾內容:", files);
} catch (error) {
console.error("讀取失敗", error);
}
};
checkDirectory();
執行後,你會看到終端機印出一個陣列,裡面包含了 app.js、math.js、package.json 等你這幾天建立的所有檔案。


http 模組:純手工打造第一台 Web 伺服器這是今天的主菜,也是所有後端框架(包含我們未來要學的 Express)的底層核心。我們將完全不靠任何外部套件,純手工起一個伺服器,讓瀏覽器能夠連線過來!
實作練習:
將 server.js 的內容全部清空,換成以下這段經典的 HTTP 伺服器程式碼:
import http from 'http';
// 建立伺服器,req (Request) 是客戶端發來的請求,res (Response) 是我們要回傳的回應
const server = http.createServer((req, res) => {
// 取得使用者請求的網址路徑
console.log(`收到請求:${req.method} ${req.url}`);
// 簡易路由設計
if (req.url === '/') {
// 回傳 HTML 格式
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.end('<h1> 歡迎來到戰錘40k,我是爺們</h1>');
} else if (req.url === '/api/user') {
// 回傳 JSON 格式 (現代 API 最常用的格式)
const userData = { name: 'Node Master', level: 99 };
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(userData));
} else {
// 找不到頁面,回傳 404 狀態碼
res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end('404 Not Found - 找不到這個酷東西');
}
});
// 指定伺服器監聽 3000 埠 (Port)
const PORT = 3000;
server.listen(PORT, () => {
console.log(` 伺服器已啟動,請打開瀏覽器前往:http://localhost:${PORT}`);
console.log(`試著訪問 http://localhost:${PORT}/api/user 看看 JSON 回應!`);
});
執行 node server.js,這次終端機不會立刻結束,而是會停留在 伺服器已啟動...,這代表你的程式正在持續監聽連線!
打開你的網頁瀏覽器(Chrome 或 Edge)。
在網址列輸入 http://localhost:3000 並按下 Enter。你將會看到大大的「 歡迎來到純手工 Node.js 伺服器!」。
接著輸入 http://localhost:3000/api/user,你會看到完美的 JSON 格式資料被印在畫面上。
(要關閉伺服器時,請在終端機按下 Ctrl + C)。
你現在已經具備了撰寫 Web API 的最底層概念:接收請求 (req) ➔ 判斷路徑 ➔ 設定標頭與狀態碼 (res.writeHead) ➔ 回傳資料 (res.end)。